class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     * 两次交易所能获得的最大收益
     * @param prices int整型vector 股票每一天的价格
     * @return int整型
     */
    int maxProfit(vector<int>& prices) {
        // write code here
        int len=prices.size();
//正向遍历找最小min
        vector<int>L2R(len,0);
//反向遍历，找max
        vector<int>R2L(len,0);
        int minprice=prices[0];
        int profit=0;
        for(int i=1;i<len;i++)
        {
            if(prices[i]-minprice>0)
                profit=prices[i]-minprice;
            L2R[i]=profit;
            if(prices[i]<minprice)
                minprice=prices[i];
        }
        int maxprice=prices[len-1];
        profit=0;
        for(int i=len-2;i>=0;i--)
        {
            if(maxprice-prices[i]>profit)
                profit=maxprice-prices[i];
            R2L[i]=profit;
            if(prices[i]>maxprice)
                maxprice=prices[i];
        }
        int ans=0;
        int k=0;
        for(k=0;k<len;k++)
        {
            if(L2R[k]+R2L[k]>ans)
                ans=L2R[k]+R2L[k];
        }
        return ans;
    }
};